﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;

namespace ServicioWPF.Clases
{
    class ClaseUsuario
    {
        #region Propiedades
        private int claveEntidad;
        private string nombre;
        private string apellidoPaterno;
        private string apellidoMaterno;
        private string direccion;
        private string telefono;
        private string correo;
        private string usuarioLogearte;
        private string contrasena;
        private int tipoUsuario;
        #endregion

        #region GetersYSeters
        public int ClaveEntidad
        {
            get
            {
                return claveEntidad;
            }
            set
            {
                claveEntidad = value;
            }
        }

        public string Nombre
        {
            get
            {
                return nombre;
            }
            set
            {
                nombre = value;
            }
        }

        public string ApellidoMaterno
        {
            get
            {
                return apellidoMaterno;
            }
            set
            {
                apellidoMaterno = value;
            }
        }

        public string ApellidoPaterno
        {
            get
            {
                return apellidoPaterno;
            }
            set
            {
                apellidoPaterno = value;
            }
        }

        public string Direccion
        {
            get
            {
                return direccion;
            }
            set
            {
                direccion = value;
            }
        }

        public string Telefono
        {
            get
            {
                return telefono;
            }
            set
            {
                telefono = value;
            }
        }

        public string Correo
        {
            get
            {
                return correo;
            }
            set
            {
                correo = value;
            }
        }

        public string UsuarioLogearte
        {
            get
            {
                return usuarioLogearte;
            }
            set
            {
                usuarioLogearte = value;
            }
        }

        public string Contrasena
        {
            get
            {
                return contrasena;
            }
            set
            {
                contrasena = value;
            }
        }

        public int TipoUsuario
        {
            get 
            { 
                return tipoUsuario; 
            }
            set 
            {
                tipoUsuario = value; 
            }
        }
        #endregion

        #region Metodos
        /// <summary>
        /// Metodo que verifica el login dado por el usuario
        /// </summary>
        /// <param name="MiUsuario"></param>
        /// <returns></returns>
        public static bool VerificaLogin(ClaseUsuario MiUsuario)
        {
            bool Validacion = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
                MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from " +
                "Usuario where usuario='" + MiUsuario.usuarioLogearte + "' and " +
                "contrasena= MD5('" + MiUsuario.contrasena + "');", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            if (dtProfesor.Rows.Count > 0)
            {
                Validacion = true;
            }
            return Validacion;
        }

        /// <summary>
        /// Metodo que obtiene la claveEntidad del usuario dado su usuario y pass
        /// </summary>
        /// <param name="MiUsuario"></param>
        /// <returns></returns>
        public static int buscaLaCveEntUsuario(ClaseUsuario MiUsuario)
        {
            int Validacion = 0;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from " +
                "Usuario where usuario='" + MiUsuario.usuarioLogearte + "' and " +
                "contrasena= MD5('" + MiUsuario.contrasena + "');", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            if (dtProfesor.Rows.Count > 0)
            {
                Validacion = Convert.ToInt32(dtProfesor.Rows[0].ItemArray[0]);
            }
            return Validacion;
        }

        /// <summary>
        /// Metodo que busca el objeto usuario por su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuario"></param>
        /// <returns></returns>
        public static ClaseUsuario buscaPorCveEntUsuario(int CveEntUsuario)
        {
            ClaseUsuario miUsuario = new ClaseUsuario();
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from " +
                "Usuario where ClaveEntidad='" + CveEntUsuario + "'", ConexionMySql);
            DataTable dtUsuario = new DataTable();
            daProfesor.Fill(dtUsuario);
            miUsuario.claveEntidad = Convert.ToInt32(dtUsuario.Rows[0].ItemArray[0]);
            miUsuario.nombre = dtUsuario.Rows[0].ItemArray[1].ToString();
            miUsuario.apellidoPaterno = dtUsuario.Rows[0].ItemArray[2].ToString();
            miUsuario.apellidoMaterno = dtUsuario.Rows[0].ItemArray[3].ToString();
            return miUsuario;
        }

        /// <summary>
        /// Metodo que busca Todos los usuarios profesor
        /// </summary>
        /// <returns></returns>
        public static DataTable buscarTodosProfesores()
        {

            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select ClaveEntidad, Nombre, " +
                "ApellidoPaterno, ApellidoMaterno, Direccion, Telefono, Correo from Usuario where estatus=1;", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            return dtProfesor;
        }

        /// <summary>
        /// Metodo que obtiene datatable del usuario dada su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuario"></param>
        /// <returns></returns>
        public static DataTable dtBuscarPorCveEntUsuario(int CveEntUsuario)
        {
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select ClaveEntidad, Nombre, " +
                "ApellidoPaterno, ApellidoMaterno, Direccion, Telefono, Correo, Usuario from Usuario " +
                "where ClaveEntidad = " + CveEntUsuario + ";", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            return dtProfesor;
        }

        public void CargaMisDatos()
        {
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            string select = "select * from Usuario where ClaveEntidad=" + claveEntidad + ";";
            try
            {
                ConexionMySql.Open();
                MySqlCommand comando = new MySqlCommand(select, ConexionMySql);
                comando.ExecuteNonQuery();
                MySqlDataReader reader = comando.ExecuteReader();
                if (reader.Read())
                {
                    this.claveEntidad = reader.GetInt32("ClaveEntidad");
                    this.nombre = reader.IsDBNull(0) ? string.Empty : reader.GetString("Nombre");
                    this.apellidoPaterno = reader.IsDBNull(0) ? string.Empty : reader.GetString("ApellidoPaterno");
                    this.apellidoMaterno = reader.IsDBNull(0) ? string.Empty : reader.GetString("ApellidoMaterno");
                    this.usuarioLogearte = reader.IsDBNull(0) ? string.Empty : reader.GetString("Usuario");
                    this.direccion = reader.IsDBNull(0) ? string.Empty : reader.GetString("Direccion");
                    this.telefono = reader.IsDBNull(0) ? string.Empty : reader.GetString("Telefono");
                    this.correo = reader.IsDBNull(0) ? string.Empty : reader.GetString("Correo");
                    this.tipoUsuario = reader.GetInt32("TipoUsuario");
                }
            }
            catch
            {
            }
        }

        /// <summary>
        /// metodo que actualiza el registro de un usuario dada su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuaio"></param>
        /// <returns></returns>
        public static bool actualizaUsuario(ClaseUsuario miUsuario)
        {
            bool Actualizo = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            string Actualiza = "update usuario set Nombre='" + miUsuario.nombre + "', " +
                                "ApellidoPaterno = '" + miUsuario.apellidoPaterno + "', " +
                                "ApellidoMaterno = '" + miUsuario.apellidoMaterno + "', " +
                                "Direccion = '" + miUsuario.direccion + "', " +
                                "Telefono = '" + miUsuario.telefono + "', " +
                                "Correo = '" + miUsuario.correo + "' where ClaveEntidad = " + miUsuario.claveEntidad + ";";
            ConexionMySql.Open();
            try
            {
                MySqlCommand comando = new MySqlCommand(Actualiza, ConexionMySql);
                comando.ExecuteNonQuery();
                Actualizo = true;
                return Actualizo;
            }
            catch
            {
                return Actualizo;
            }

        }

        public static bool insertaNuevoProfesor(ClaseUsuario miUsuario)
        {
            bool inserta = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            string Insert = "insert into usuario(Nombre, ApellidoPaterno, ApellidoMaterno, " +
                            "Usuario, Contrasena, Direccion, Telefono, Correo, TipoUsuario, Estatus) " +
                            "values('" + miUsuario.nombre + "', '" + miUsuario.apellidoPaterno + "', " +
                            "'" + miUsuario.apellidoMaterno + "', '" + miUsuario.usuarioLogearte + "', " +
                            "MD5('" + miUsuario.contrasena + "'), '" + miUsuario.direccion + "', " +
                            "'" + miUsuario.correo + "', '" + miUsuario.telefono + "', 1, 1);";
            ConexionMySql.Open();
            try
            {
                MySqlCommand comando = new MySqlCommand(Insert, ConexionMySql);
                comando.ExecuteNonQuery();
                inserta = true;
                return inserta;
            }
            catch
            {
                return inserta;
            }
        }

        /// <summary>
        /// metodo que verifica si ya existe un Profesor con el mismo nombre de usuario
        /// </summary>
        /// <param name="nombreUsuario"></param>
        /// <returns></returns>
        public static bool verificaExisteMismoNombreUsuarioProfesor(string nombreUsuario)
        {
            bool existe = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from Usuario where usuario= '" + nombreUsuario + "';", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            if (dtProfesor.Rows.Count > 0)
            {
                existe = true;
            }
            return existe;
        }

        public void EliminaProfesor()
        {
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            string elimina = "update usuario set Estatus=0 where " +
                "ClaveEntidad=" + claveEntidad + ";";
            ConexionMySql.Open();
            try
            {
                MySqlCommand comando = new MySqlCommand(elimina, ConexionMySql);
                comando.ExecuteNonQuery();
            }
            catch
            {
            }
        }


        #endregion
    }
}
